/* ***** BEGIN LICENSE BLOCK *****
 * Copyright (C) 2008-2011, The 100GET-E3-R3G Project Team.
 * 
 * This work has been funded by the Federal Ministry of Education
 * and Research of the Federal Republic of Germany
 * (BMBF Förderkennzeichen 01BP0775). It is part of the EUREKA project
 * "100 Gbit/s Carrier-Grade Ethernet Transport Technologies
 * (CELTIC CP4-001)". The authors alone are responsible for this work.
 *
 * See the file AUTHORS for details and contact information.
 * 
 * This file is part of MuLaViTo (Multi-Layer Visualization Tool).
 *
 * MuLaViTo is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License Version 3 or later
 * (the "GPL"), or the GNU Lesser General Public License Version 3 or later
 * (the "LGPL") as published by the Free Software Foundation.
 *
 * MuLaViTo is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * or the GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License and
 * GNU Lesser General Public License along with MuLaViTo; see the file
 * COPYING. If not, see <http://www.gnu.org/licenses/>.
 *
 * ***** END LICENSE BLOCK ***** */
package mulavito.samples.utils;

import mulavito.graph.AbstractLayerStack;
import mulavito.graph.LayerChangedEvent;

/** simple multi-layer graph with change support */
public class MyMLG extends AbstractLayerStack<MyL> {
	public void fireLayerChanged(MyL layer) {
		fireStateChanged(new LayerChangedEvent<MyL>(this, layer, false));
	}

	@Override
	public void addLayer(MyL layer) {
		if (layer != null && !layers.contains(layer)) {
			layers.add(layer);
			layer.layer = layers.size() - 1;
			layer.owner = this;
			fireStateChanged(new LayerChangedEvent<MyL>(this, layer, false));
		}
	}

	// private void removeLayer(MyL layer) {
	// if (layers.contains(layer)) {
	// layers.remove(layer);
	// layer.layer = -1;
	// layer.owner = null;
	// fireStateChanged(new LayerChangedEvent<MyV, MyE>(this, layer,
	// true));
	// }
	// }

	// public void clear() {
	// while (!layers.isEmpty())
	// removeLayer(layers.get(0));
	// }
}
